#include<iostream>
#include<signal.h>
#include<unistd.h>

using namespace std;

void myhandler(int signo)
{
    cout << "i get a signal num: " << signo <<endl;
    exit(0);
}


void print(const sigset_t& pending)
{
    for(int i = 31;i >= 1;i--)
    {
        if(sigismember(&pending,i))
        {
            cout << "1";
        }
        else
        {
            cout << "0";
        }
    }
    cout << "\n\n";
}

int main()
{
    signal(SIGINT,myhandler);

    sigset_t nset,oset;
    sigemptyset(&nset);
    sigemptyset(&nset);
    sigaddset(&nset,2);

    int cnt = 20;
    sigprocmask(SIG_SETMASK,&nset,&oset);

    sigset_t pending;
    while(cnt--)
    {
        sigpending(&pending);
        print(pending);
        sleep(1);
    }

    
    sigprocmask(SIG_SETMASK,&oset,nullptr);


    return 0;
}